Micron Document
NexusPi Git Node

Node / mirrors / MeshChatX / files / meshchatx / src / frontend / js / networkRecovery.js

Displaying Raw • Download

meshchatx/src/frontend/js/networkRecovery.js 2230d76a6c2f8f4d9117534fe39068d0ae8a5e05 (2230d76a) Text, 2.33 KB

T8b949e// SPDX-License-Identifier: 0BSD

T8b949e/**
* Classify mesh startup / degraded errors for recovery UI.
* Not every failure is an interface config problem.
*/

Tff7b72const Te6edf3INTERFACE_HINTS Tff7b72= Tb4b4b4[
Ta5d6ff"interface"Tb4b4b4,
Ta5d6ff"interfaces"Tb4b4b4,
Ta5d6ff"rnode"Tb4b4b4,
Ta5d6ff"serial"Tb4b4b4,
Ta5d6ff"usb"Tb4b4b4,
Ta5d6ff"autointerface"Tb4b4b4,
Ta5d6ff"tcpclient"Tb4b4b4,
Ta5d6ff"udp"Tb4b4b4,
Ta5d6ff"i2p"Tb4b4b4,
Ta5d6ff"wlan"Tb4b4b4,
Ta5d6ff"kiss"Tb4b4b4,
Ta5d6ff"ax25"Tb4b4b4,
Ta5d6ff"pipeinterface"Tb4b4b4,
Ta5d6ff"rns config"Tb4b4b4,
Ta5d6ff"configobj"Tb4b4b4,
Tb4b4b4]Tb4b4b4;

Tff7b72const Te6edf3DATABASE_RECOVERY_HINTS Tff7b72= Tb4b4b4[
Ta5d6ff"database version"Tb4b4b4,
Ta5d6ff"newer than this meshchatx build"Tb4b4b4,
Ta5d6ff"database initialization failed"Tb4b4b4,
Ta5d6ff"schema migration"Tb4b4b4,
Ta5d6ff"restore a backup"Tb4b4b4,
Ta5d6ff"databasetoonew"Tb4b4b4,
Ta5d6ff"premigrationbackup"Tb4b4b4,
Ta5d6ff"postmigrationverification"Tb4b4b4,
Ta5d6ff"quick_check failed"Tb4b4b4,
Ta5d6ff"integrity failure"Tb4b4b4,
Tb4b4b4]Tb4b4b4;

T8b949e/**
* @param {unknown} error
* @returns {string}
*/
Tff7b72export Tff7b72function Te6edf3networkErrorTextTb4b4b4(Te6edf3errorTb4b4b4) Tb4b4b4{
Tff7b72return Tffa657StringTb4b4b4(Te6edf3error Tff7b72|| Ta5d6ff""Tb4b4b4)Tb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}

T8b949e/**
* @param {unknown} error
* @returns {boolean}
*/
Tff7b72export Tff7b72function Te6edf3isLikelyInterfaceRecoveryErrorTb4b4b4(Te6edf3errorTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3text Tff7b72= Te6edf3networkErrorTextTb4b4b4(Te6edf3errorTb4b4b4)Tb4b4b4.Te6edf3toLowerCaseTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3textTb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72falseTb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3isDatabaseRecoveryErrorTb4b4b4(Te6edf3errorTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72falseTb4b4b4;
Tb4b4b4}
Tff7b72return Te6edf3INTERFACE_HINTSTb4b4b4.Te6edf3someTb4b4b4(Tb4b4b4(Te6edf3hintTb4b4b4) Tb4b4b4=> Te6edf3textTb4b4b4.Te6edf3includesTb4b4b4(Te6edf3hintTb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}

T8b949e/**
* @param {unknown} error
* @returns {boolean}
*/
Tff7b72export Tff7b72function Te6edf3isDatabaseRecoveryErrorTb4b4b4(Te6edf3errorTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3text Tff7b72= Te6edf3networkErrorTextTb4b4b4(Te6edf3errorTb4b4b4)Tb4b4b4.Te6edf3toLowerCaseTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3textTb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72falseTb4b4b4;
Tb4b4b4}
Tff7b72return Te6edf3DATABASE_RECOVERY_HINTSTb4b4b4.Te6edf3someTb4b4b4(Tb4b4b4(Te6edf3hintTb4b4b4) Tb4b4b4=> Te6edf3textTb4b4b4.Te6edf3includesTb4b4b4(Te6edf3hintTb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}

T8b949e/**
* Route name to open after degraded startup, or null to leave the user on the
* current page (banner actions still apply).
* @param {unknown} error
* @returns {"interfaces" | null}
*/
Tff7b72export Tff7b72function Te6edf3recoveryRouteForNetworkErrorTb4b4b4(Te6edf3errorTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3isLikelyInterfaceRecoveryErrorTb4b4b4(Te6edf3errorTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72return Ta5d6ff"interfaces"Tb4b4b4;
Tb4b4b4}
Tff7b72return Tff7b72nullTb4b4b4;
Tb4b4b4}

T8b949e/**
* Full route location for degraded startup when the UI should jump to recovery.
* @param {unknown} error
* @returns {{ name: string, hash?: string } | null}
*/
Tff7b72export Tff7b72function Te6edf3recoveryLocationForNetworkErrorTb4b4b4(Te6edf3errorTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3isDatabaseRecoveryErrorTb4b4b4(Te6edf3errorTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72return Tb4b4b4{ Te6edf3nameTff7b72: Ta5d6ff"about"Tb4b4b4, Te6edf3hashTff7b72: Ta5d6ff"#about-database-backups" Tb4b4b4}Tb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3routeName Tff7b72= Te6edf3recoveryRouteForNetworkErrorTb4b4b4(Te6edf3errorTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3routeNameTb4b4b4) Tb4b4b4{
Tff7b72return Tb4b4b4{ Te6edf3nameTff7b72: Te6edf3routeName Tb4b4b4}Tb4b4b4;
Tb4b4b4}
Tff7b72return Tff7b72nullTb4b4b4;
Tb4b4b4}

Served by rngit 1.5.2 - Generated in 0.02s